package com.boco.ibssystem.business.controller.ylfwjg;

import com.boco.biinjectionserviceapi.vo.Params;
import com.boco.ibssystem.business.service.IYlyyService;
import com.boco.ibssystem.business.vo.*;
import com.boco.ibssystem.common.base.AbstractService;
import com.boco.ibssystem.common.result.AjaxResult;
import com.boco.ibssystem.common.result.support.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author yichaofan
 * @date: 2019年05月15日 17:13
 * @email: hjljy@outlook.com
 * @version: v1.0
 * @description: 医疗运营controller
 */
@RestController
@RequestMapping("/ylyy/")
@Api(tags = "医疗运营监管")
@ResponseResult
public class YlyyController {
    @Autowired
    private AbstractService abstractService;

    @Autowired
    private IYlyyService service;

    /**
     * 获取到患者人均每月费用数据，门诊人均费用和住院人均费用
     * @param params 前端传递的查询参数
     * @return  HzfdVO 患者负担数据VO
     */
    @GetMapping("/hzfd/hzrjfy")
    @ApiOperation(value = "患者负担数据：患者人均费用")
    public List<HzfdVO> getHzfdData(@ApiParam(name = "参数对象", value = "传入json格式", required = false) Params params) {
        List<HzfdVO> list = service.getHzrjfyData(params);
        return  list;
    }

    /**
     * 获取到患者每月自费以及保险药费支出情况
     * @param  params 前端传递的查询参数
     * @return  HzfdVO 患者负担数据VO
     */
    @GetMapping("/hzfd/hzyyfzcgk")
    @ApiOperation(value = "患者负担数据：患者医药费支出概况")
    public List<HzfdVO> getHzfdYyfzcData(@ApiParam(name = "参数对象", value = "传入json格式", required = false) Params params){
        List<HzfdVO> list = service.getYyfzcData(params);
        return  list;
    }
    /**
     * 描述：//获取报告期内，医疗保险费用构成类型数据
     * @author yichaofan
     * @since 14:19 2019/5/16 0016
     * @param  params   前端传递的查询参数
     * @return java.util.List<com.boco.ibssystem.business.vo.PieData>
     *          饼图数据集合  name:value
     **/
    @GetMapping("/hzfd/ylbxgc")
    @ApiOperation(value = "患者负担数据：基本医疗保险构成")
    public List<PieData> getHzfdYlbxgcData(@ApiParam(name = "参数对象", value = "传入json格式", required = false) Params params){
        List<PieData> list = service.getYlbxgcData(params);
        return  list;
    }

    /**
     * 描述：获取保险费用和总费用数据
     * @author yichaofan
     * @since 15:10 2019/5/16 0016
     * @param   params 前端传递的查询参数
     * @return  HzfdVO  患者负担数据VO
     **/
    @GetMapping("/hzfd/bxfyzb")
    @ApiOperation(value = "患者负担数据:保险费用占比")
    public List<HzfdVO> getHzfdBxfyzbData(@ApiParam(name = "参数对象", value = "传入json格式", required = false) Params params){
        List<HzfdVO> list = service.getBxfyzbData(params);
        return  list;
    }

    /**
     * 描述：获取患者负担详细信息列表统计数据
     * @author yichaofan
     * @since 16:17 2019/5/16 0016
     * @param   params 前端传递的查询参数
     * @return  HzfdVO
     **/
    @GetMapping("/hzfd/xxtj")
    @ApiOperation(value = "患者负担数据:详细信息统计")
    public List<HzfdVO>  getHzfdXxtjData(@ApiParam(name = "参数对象", value = "传入json格式", required = false) Params params){
        List<HzfdVO> list = service.getHzfdXxtjData(params);
        return  list;
    }
    /**
     * 描述：每月资产收入数据
     * @author yichaofan
     * @since 16:24 2019/5/16 0016
     * @param  params  前端传递的查询参数
     * @return  ZcyyVO  资产运营VO数据
     **/
    @GetMapping("/zcyy/zcsrqs")
    @ApiOperation(value = "资产运营数据:资产收入趋势图")
    public  List<ZcyyVO> getZcyyZcsrqsData(Params params){
        List<ZcyyVO> list = service.getZcyyZcsrqsData(params);
        return  list;
    }

    /**
     * 描述：获取资产运营的资产收入构成数据
     * @author yichaofan
     * @since 17:31 2019/5/16 0016
     * @param  params  前端传递的查询参数
     * @return count表示其他 count1 表示药费  count2表示材料费 count3检查费
     **/
    @GetMapping("/zcyy/zcsrgc")
    @ApiOperation(value = "资产运营数据:资产收入构成")
    public ZcyyVO getZcyyZcsrgcData(Params params){
        ZcyyVO data = service.getZcyyZcsrgcData(params);
        return  data;
    }

    /**
     * 描述：获取资产运营药品收入top5的数据
     * @author yichaofan
     * @since 17:46 2019/5/16 0016
     * @param   params 前端传递的查询参数
     * @return    PieData       name ： 药品代码   value :药品收入值
     **/
    @GetMapping("/zcyy/yptop5")
    @ApiOperation(value = "资产运营：药品收入top5数据")
    public List<PieData> getZcyyYptopData(Params params){
        List<PieData> data =  service.getZcyyYptopData(params);
        return  data;
    }

    /**
     * 描述：获取资产运营材料收入top5的数据
     * @author yichaofan
     * @since 11:26 2019/5/17 0017
     * @param   params 前端传递的查询参数
     * @return  PieData   name ： 材料代码   value :材料收入值
     **/
    @GetMapping("/zcyy/cltop5")
    @ApiOperation(value = "资产运营：材料收入top5数据")
    public List<PieData> getZcyyCltopData(Params params){
        List<PieData> data =  service.getZcyyCltopData(params);
        return data;
    }

    /**
     * 描述：获取资产运营检查收入top5的数据
     * @author yichaofan
     * @since 11:26 2019/5/17 0017
     * @param   params 前端传递的查询参数
     * @return name ： 检查代码   value :检查收入值
     **/
    @GetMapping("/zcyy/jctop5")
    @ApiOperation(value = "资产运营：检查收入top5数据")
    public List<PieData> getZcyyJctopData(Params params){
        List<PieData> data =  service.getZcyyJctopData(params);
        return data;
    }
    /**
     * 描述：获取资产收入明细表格数据
     * @author yichaofan
     * @since 15:18 2019/5/17 0017
     * @param  params  前端传递的查询参数
     * @return com.boco.ibssystem.common.result.AjaxResult
     **/
    @GetMapping("/zcyy/srtj")
    @ApiOperation(value = "资产运营：资产收入明细")
    public  List<ZcyyVO> getZcyyZcsrmxData(Params params){
        List<ZcyyVO> list = service.getZcyyZcsmxsData(params);
        return list;
    }
    /**
     * 描述：获取工作负荷：诊疗人次数据
     * @author yichaofan
     * @since 16:36 2019/5/17 0017
     * @param   params  前端传递的查询参数
     * @return java.util.List<com.boco.ibssystem.business.vo.PieData>
     **/
    @GetMapping("/gzfh/zlrc")
    @ApiOperation("工作负荷：诊疗人次数据")
    public List<PieData> getGzfhZlrcData(Params params){
        List<PieData> list = service.getGzfhZlrcData(params);
        PieData data = new PieData();
        data.setName("总诊疗人次");
        list.stream().forEach(pieData -> {
          data.setValue(pieData.getValue()+data.getValue());
        });
        list.add(data);
        return  list;
    }
    /**
     * 描述：获取工作负荷：诊疗就诊类型每月数据
     * @author yichaofan
     * @since 17:01 2019/5/17 0017
     * @param   params 前端传递的查询参数
     * @return java.util.List<com.boco.ibssystem.business.vo.GzfhVO>
     **/
    @GetMapping("/gzfh/zlrc")
    @ApiOperation("工作负荷：诊疗就诊类型")
    public List<GzfhVO> getGzfhJzlxData(Params params){
        List<GzfhVO> list = service.getGzfhJzlxData(params);
        return  list;
    }
    /**
     * 描述：工作负荷：住院患者手术次数
     * @author yichaofan
     * @since 17:24 2019/5/17 0017
     * @param   params 前端传递的查询参数
     * @return java.util.List<com.boco.ibssystem.business.vo.GzfhVO>
     **/
    @GetMapping("/gzfh/zyhzsscs")
    @ApiOperation(value = "工作负荷：住院患者手术次数")
    public List<GzfhVO> getGzfhZyhzsscsData(Params params){
        List<GzfhVO> list = service.getGzfhZyhzsscsData(params);
        return  list;
    }

    /**
     * 描述：工作负荷：出入院人数统计
     * @author yichaofan
     * @since 17:47 2019/5/17 0017
     * @param   params  前端传递的查询参数
     * @return java.util.List<com.boco.ibssystem.business.vo.GzfhVO>
     **/
    @GetMapping("/gzfh/crytj")
    @ApiOperation(value = "工作负荷：出入院人数统计")
    public List<GzfhVO> getGzfhCrytjData(Params params){
        List<GzfhVO> list = service.getGzfhCrytjData(params);
        return  list;
    }
    /**
     * 描述：获取工作负荷：详细信息统计
     * @author yichaofan
     * @since 11:45 2019/5/20 0020
     * @param   params 前端传递的查询参数
     * @return java.util.List<com.boco.ibssystem.business.vo.GzfhVO>
     **/
    @GetMapping("/gzfh/xxtj")
    @ApiOperation(value = "工作负荷：详细信息统计")
    public List<GzfhVO> getGzfhXxtjData(Params params){
        List<GzfhVO> list = service.getGzfhXxtjData(params);
        return  list;
    }
    /**
     * 描述：获取出院患者平均住院日
     * @author yichaofan
     * @since 14:14 2019/5/20 0020
     * @param   params 前端传递的查询参数
     * @return java.util.List<com.boco.ibssystem.business.vo.PieData>
     **/
    @GetMapping("/gzxl/pjzyr")
    @ApiOperation(value = "工作效率：获取平均住院日")
    public List<PieData> getGzxlPjzyr(Params params){
        return service.getGxxlPjzyr(params);
    }
}
